package com.brightgenerous.niconama05.work2;

import com.brightgenerous.niconama05.anime.Anime;
import com.brightgenerous.niconama05.anime.Heroine;
import com.brightgenerous.niconama05.anime.product.Keion;
import com.brightgenerous.niconama05.anime.product.Minamike;
import com.brightgenerous.niconama05.anime.product.Rakisuta;

/**
 * やる夫 2
 * 
 * @author brigen
 */
class Yaruo2 {

	/** 改行文字 */
	private static final String LINE_SEPARATOR = System.getProperty("line.separator");

	/**
	 * インタビューする
	 *
	 * @param x_anime アニメ
	 */
	public void interview(Anime x_anime) {

		if (x_anime instanceof Minamike) {
			Minamike minamike = (Minamike) x_anime;
			interview(minamike);
		} else if (x_anime instanceof Rakisuta) {
			Rakisuta rakisuta = (Rakisuta) x_anime;
			interview(rakisuta);
		} else if (x_anime instanceof Keion) {
			Keion keion = (Keion) x_anime;
			interview(keion);
		} else {
			StringBuilder kiji = new StringBuilder();
			kiji.append("タイトル:");
			kiji.append(x_anime.getTitle());
			kiji.append(LINE_SEPARATOR);
			kiji.append("あらすじ:");
			kiji.append(x_anime.getDescription());

			System.out.println(kiji.toString());
		}
	}

	/**
	 * みなみけをインタビューする
	 *
	 * @param x_minamike みなみけ
	 */
	private void interview(Minamike x_minamike) {
		StringBuilder kiji = new StringBuilder();
		kiji.append("タイトル:");
		kiji.append(x_minamike.getTitle());
		kiji.append(LINE_SEPARATOR);
		kiji.append("あらすじ:");
		kiji.append(x_minamike.getDescription());
		kiji.append(LINE_SEPARATOR);
		kiji.append("--- CHARACTERS ---").append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_minamike.getHaruka())).append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_minamike.getKana())).append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_minamike.getChiaki())).append(LINE_SEPARATOR);
		kiji.append("------------------").append(LINE_SEPARATOR);

		System.out.println(kiji.toString());
	}

	/**
	 * らきすたをインタビューする
	 *
	 * @param x_rakisuta らきすた
	 */
	private void interview(Rakisuta x_rakisuta) {
		StringBuilder kiji = new StringBuilder();
		kiji.append("タイトル:");
		kiji.append(x_rakisuta.getTitle());
		kiji.append(LINE_SEPARATOR);
		kiji.append("あらすじ:");
		kiji.append(x_rakisuta.getDescription());
		kiji.append(LINE_SEPARATOR);
		kiji.append("--- CHARACTERS ---").append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_rakisuta.getKonata())).append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_rakisuta.getTsukasa())).append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_rakisuta.getKagami())).append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_rakisuta.getMiyuki())).append(LINE_SEPARATOR);
		kiji.append("------------------").append(LINE_SEPARATOR);

		System.out.println(kiji.toString());
	}

	/**
	 * けいおんをインタビューする
	 *
	 * @param x_keion けいおん
	 */
	private void interview(Keion x_keion) {
		StringBuilder kiji = new StringBuilder();
		kiji.append("タイトル:");
		kiji.append(x_keion.getTitle());
		kiji.append(LINE_SEPARATOR);
		kiji.append("あらすじ:");
		kiji.append(x_keion.getDescription());
		kiji.append(LINE_SEPARATOR);
		kiji.append("--- CHARACTERS ---").append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_keion.getYui())).append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_keion.getMio())).append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_keion.getRitsu())).append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_keion.getTsumugi())).append(LINE_SEPARATOR);
		kiji.append(heroineToString(x_keion.getAzusa())).append(LINE_SEPARATOR);
		kiji.append("------------------").append(LINE_SEPARATOR);

		System.out.println(kiji.toString());
	}

	/**
	 * キャラクターから一行紹介文を生成する
	 *
	 * @param x_heroine キャラクタ―
	 * @return 一行紹介文
	 */
	private static String heroineToString(Heroine x_heroine) {
		return x_heroine.getName() + "(CV:" + x_heroine.getActor() + ")";
	}
}
